<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.4"/>
<title>MPCDI Library: src/Base/mpcdiMacros.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="scalable_logo.gif"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">MPCDI Library
   </div>
   <div id="projectbrief">MPCDI  Reader/Writer/Creater/Validator/etc.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.4 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('mpcdi_macros_8h.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#namespaces">Namespaces</a> &#124;
<a href="#namespaces">Constant Groups</a> &#124;
<a href="#define-members">Macros</a>  </div>
  <div class="headertitle">
<div class="title">mpcdiMacros.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="mpcdi_error_helper_8h_source.html">mpcdiErrorHelper.h</a>&quot;</code><br/>
<code>#include &lt;assert.h&gt;</code><br/>
</div>
<p><a href="mpcdi_macros_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Namespaces</h2></td></tr>
<tr class="memitem:namespacempcdi"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacempcdi.html">mpcdi</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="namespaces"></a>
Constant Groups</h2></td></tr>
<tr class="memitem:namespacempcdi"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="namespacempcdi.html">mpcdi</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a8c12b0e57080923dcec21e70272c7424"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#a8c12b0e57080923dcec21e70272c7424">__mpcdiMacros_H_</a></td></tr>
<tr class="separator:a8c12b0e57080923dcec21e70272c7424"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1770fc1b240a096dd93af8f685332ba9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#a1770fc1b240a096dd93af8f685332ba9">MPCDI_FAIL_RET</a>(func_or_error)</td></tr>
<tr class="separator:a1770fc1b240a096dd93af8f685332ba9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa069c9e81e8c911fba635cf2d3807b38"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#aa069c9e81e8c911fba635cf2d3807b38">mpcdiSetMacro</a>(_name_, _Type_)&#160;&#160;&#160;inline MPCDI_Error Set##_name_ (const _Type_ &amp; _arg) { this-&gt;m_##_name_ = _arg; return MPCDI_SUCCESS; }</td></tr>
<tr class="separator:aa069c9e81e8c911fba635cf2d3807b38"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d52a3852128121830435a75ef4bf651"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#a7d52a3852128121830435a75ef4bf651">mpcdiSetMacroRange</a>(_Name_, _Type_, _Min_, _Max_)</td></tr>
<tr class="separator:a7d52a3852128121830435a75ef4bf651"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25ae17f8471a9bf584e4b13eae4782fb"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#a25ae17f8471a9bf584e4b13eae4782fb">mpcdiGetMacro</a>(_name_, _type_)&#160;&#160;&#160;inline _type_ Get##_name_ () { return this-&gt;m_##_name_; }</td></tr>
<tr class="separator:a25ae17f8471a9bf584e4b13eae4782fb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6ab33a7ec4aa8161c3543c1ef076d319"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#a6ab33a7ec4aa8161c3543c1ef076d319">mpcdiGetConstMacro</a>(_name_, _type_)&#160;&#160;&#160;inline const _type_ Get##_name_ () const { return this-&gt;m_##_name_; }</td></tr>
<tr class="separator:a6ab33a7ec4aa8161c3543c1ef076d319"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:affe15c1bcae0826a7ecee2f07c460cfd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#affe15c1bcae0826a7ecee2f07c460cfd">mpcdiSet3Macro</a>(_funcname_, _xname_, _yname_, _zname_, Type_)</td></tr>
<tr class="separator:affe15c1bcae0826a7ecee2f07c460cfd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab44e6edda8b02cba126ea2bc185ebfec"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#ab44e6edda8b02cba126ea2bc185ebfec">mpcdiSet2Macro</a>(_funcname_, _xname_, _yname_, Type_)</td></tr>
<tr class="separator:ab44e6edda8b02cba126ea2bc185ebfec"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2f3fa2b73ac158a4915f668a46516e21"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#a2f3fa2b73ac158a4915f668a46516e21">mpcdiSetRefMacro</a>(_name_, _type_)&#160;&#160;&#160;inline _type_ &amp;Set##_name_ () {  return this-&gt;m_##_name_; }</td></tr>
<tr class="separator:a2f3fa2b73ac158a4915f668a46516e21"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6832927aa4a956bed665cdbafacd81c9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#a6832927aa4a956bed665cdbafacd81c9">mpcdiGetRefMacro</a>(_name_, _type_)</td></tr>
<tr class="separator:a6832927aa4a956bed665cdbafacd81c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4bfd75d3ae7a5d5e35db1e6014ab92c9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#a4bfd75d3ae7a5d5e35db1e6014ab92c9">mpcdiWarningMacro</a>(x)</td></tr>
<tr class="separator:a4bfd75d3ae7a5d5e35db1e6014ab92c9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a111a3f6e53ae6384271cee9da0651fe0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#a111a3f6e53ae6384271cee9da0651fe0">mpcdiErrorMacro</a>(x)</td></tr>
<tr class="separator:a111a3f6e53ae6384271cee9da0651fe0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af381e11dc74914af9a74f1739a6c1316"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#af381e11dc74914af9a74f1739a6c1316">MPCDI_ENUM_VALUE</a>(name, prefix, assign)&#160;&#160;&#160;prefix##name assign,</td></tr>
<tr class="separator:af381e11dc74914af9a74f1739a6c1316"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1338d3963cf6b04512f158e0407d1f46"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#a1338d3963cf6b04512f158e0407d1f46">MPCDI_ENUM_CASE</a>(name, prefix, assign)&#160;&#160;&#160;case prefix##name: return #name;</td></tr>
<tr class="separator:a1338d3963cf6b04512f158e0407d1f46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa26460d502cc49919219ee3347f2ecd"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#aaa26460d502cc49919219ee3347f2ecd">MPCDI_ENUM_STRCMP</a>(name, prefix, assign)&#160;&#160;&#160;if (value==std::string(#name)) return prefix##name;</td></tr>
<tr class="separator:aaa26460d502cc49919219ee3347f2ecd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57d82fb28d7ea3d29b787c79f3fe2ca9"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#a57d82fb28d7ea3d29b787c79f3fe2ca9">MPCDI_DECLARE_ENUM</a>(EnumType, ENUM_DEF)</td></tr>
<tr class="separator:a57d82fb28d7ea3d29b787c79f3fe2ca9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a04fbd56942ee8ce9ce9f3e0f636fdccf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#a04fbd56942ee8ce9ce9f3e0f636fdccf">MPCDI_DECLARE_ENUM_TYPEDEF</a>(EnumType, ENUM_DEF)</td></tr>
<tr class="separator:a04fbd56942ee8ce9ce9f3e0f636fdccf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa882b6baa25140dd6eae93ab6761b048"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#aa882b6baa25140dd6eae93ab6761b048">MPCDI_DECLARE_ENUM_CONV_FUNC</a>(_EnumType_)</td></tr>
<tr class="separator:aa882b6baa25140dd6eae93ab6761b048"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab9a7a15d291fdace9f939b67bc1b8a72"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#ab9a7a15d291fdace9f939b67bc1b8a72">MPCDI_DEFINE_ENUM_CONV_FUNC</a>(_EnumType_, _NAMESPACE_, ENUM_DEF)</td></tr>
<tr class="separator:ab9a7a15d291fdace9f939b67bc1b8a72"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6cac6b16c6552b26de6ede14d5d24ad0"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#a6cac6b16c6552b26de6ede14d5d24ad0">mpcdiSafeDeleteMacro</a>(object)</td></tr>
<tr class="separator:a6cac6b16c6552b26de6ede14d5d24ad0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac1bb880591c33e9d668dadfeb584deab"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#ac1bb880591c33e9d668dadfeb584deab">CompilerAssert</a>(predicate)&#160;&#160;&#160;<a class="el" href="mpcdi_macros_8h.html#aedba6a8b40169d573b892f71017a3ecf">_impcdi_CASSERT_LINE</a>(predicate,__LINE__,)</td></tr>
<tr class="separator:ac1bb880591c33e9d668dadfeb584deab"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa0df08b757f1c667dd2810ac4518a4af"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#aa0df08b757f1c667dd2810ac4518a4af">_impcdi_PASTE</a>(a, b)&#160;&#160;&#160;a##b</td></tr>
<tr class="separator:aa0df08b757f1c667dd2810ac4518a4af"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aedba6a8b40169d573b892f71017a3ecf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="mpcdi_macros_8h.html#aedba6a8b40169d573b892f71017a3ecf">_impcdi_CASSERT_LINE</a>(predicate, line, file)&#160;&#160;&#160;typedef char <a class="el" href="mpcdi_macros_8h.html#aa0df08b757f1c667dd2810ac4518a4af">_impcdi_PASTE</a>(assertion_failed_##file##_,line)[2*!!(predicate)-1];</td></tr>
<tr class="separator:aedba6a8b40169d573b892f71017a3ecf"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a8c12b0e57080923dcec21e70272c7424"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define __mpcdiMacros_H_</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="aedba6a8b40169d573b892f71017a3ecf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define _impcdi_CASSERT_LINE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">predicate, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">line, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">file&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;typedef char <a class="el" href="mpcdi_macros_8h.html#aa0df08b757f1c667dd2810ac4518a4af">_impcdi_PASTE</a>(assertion_failed_##file##_,line)[2*!!(predicate)-1];</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="aa0df08b757f1c667dd2810ac4518a4af"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define _impcdi_PASTE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">a, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">b&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;a##b</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="ac1bb880591c33e9d668dadfeb584deab"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define CompilerAssert</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">predicate)</td><td></td>
          <td>&#160;&#160;&#160;<a class="el" href="mpcdi_macros_8h.html#aedba6a8b40169d573b892f71017a3ecf">_impcdi_CASSERT_LINE</a>(predicate,__LINE__,)</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="a57d82fb28d7ea3d29b787c79f3fe2ca9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MPCDI_DECLARE_ENUM</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">EnumType, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ENUM_DEF&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">enum</span> EnumType { \</div>
<div class="line">      ENUM_DEF(<a class="code" href="mpcdi_macros_8h.html#af381e11dc74914af9a74f1739a6c1316">MPCDI_ENUM_VALUE</a>, EnumType) \</div>
<div class="line">    };</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="aa882b6baa25140dd6eae93ab6761b048"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MPCDI_DECLARE_ENUM_CONV_FUNC</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_EnumType_)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">const</span> std::string Get##_EnumType_(_EnumType_ dummy); \</div>
<div class="line">    _EnumType_ Get##_EnumType_(<span class="keyword">const</span> std::string <span class="keywordtype">string</span>);</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a04fbd56942ee8ce9ce9f3e0f636fdccf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MPCDI_DECLARE_ENUM_TYPEDEF</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">EnumType, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ENUM_DEF&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">typedef</span> <span class="keyword">enum</span>  { \</div>
<div class="line">      ENUM_DEF(<a class="code" href="mpcdi_macros_8h.html#af381e11dc74914af9a74f1739a6c1316">MPCDI_ENUM_VALUE</a>, EnumType) \</div>
<div class="line">    } EnumType ;</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ab9a7a15d291fdace9f939b67bc1b8a72"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MPCDI_DEFINE_ENUM_CONV_FUNC</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_EnumType_, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_NAMESPACE_, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">ENUM_DEF&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">const</span> std::string _NAMESPACE_::Get##_EnumType_(_EnumType_ value) \</div>
<div class="line">    { \</div>
<div class="line">      switch(value) \</div>
<div class="line">      { \</div>
<div class="line">        ENUM_DEF(<a class="code" href="mpcdi_macros_8h.html#a1338d3963cf6b04512f158e0407d1f46">MPCDI_ENUM_CASE</a>, _EnumType_) \</div>
<div class="line">        default: <span class="keywordflow">return</span> <span class="stringliteral">&quot;&quot;</span>; <span class="comment">/* handle input error */</span> \</div>
<div class="line">      } \</div>
<div class="line">    } \</div>
<div class="line">    _EnumType_ _NAMESPACE_::Get##_EnumType_(<span class="keyword">const</span> std::string value) \</div>
<div class="line">    { \</div>
<div class="line">      ENUM_DEF(<a class="code" href="mpcdi_macros_8h.html#aaa26460d502cc49919219ee3347f2ecd">MPCDI_ENUM_STRCMP</a>, _EnumType_) \</div>
<div class="line">      return (_EnumType_)0; <span class="comment">/* handle input error */</span> \</div>
<div class="line">    } \</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a1338d3963cf6b04512f158e0407d1f46"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MPCDI_ENUM_CASE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">prefix, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">assign&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;case prefix##name: return #name;</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="aaa26460d502cc49919219ee3347f2ecd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MPCDI_ENUM_STRCMP</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">prefix, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">assign&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;if (value==std::string(#name)) return prefix##name;</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="af381e11dc74914af9a74f1739a6c1316"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MPCDI_ENUM_VALUE</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">name, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">prefix, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">assign&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;prefix##name assign,</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="a1770fc1b240a096dd93af8f685332ba9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define MPCDI_FAIL_RET</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">func_or_error)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{<a class="code" href="namespacempcdi.html#acd4b0b3107b2a04ec04ba94b834fd881">\</a></div>
<div class="line"><a class="code" href="namespacempcdi.html#acd4b0b3107b2a04ec04ba94b834fd881">      mpcdi::MPCDI_Error</a> error = func_or_error; \</div>
<div class="line">      if ((error) != <a class="code" href="namespacempcdi.html#acd4b0b3107b2a04ec04ba94b834fd881a27df31d7f05e0af015fe8e086a13feec">mpcdi::MPCDI_SUCCESS</a>) \</div>
<div class="line">        return error; \</div>
<div class="line">    }</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a111a3f6e53ae6384271cee9da0651fe0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mpcdiErrorMacro</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">x)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="a6ab33a7ec4aa8161c3543c1ef076d319"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mpcdiGetConstMacro</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_name_, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_type_&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;inline const _type_ Get##_name_ () const { return this-&gt;m_##_name_; }</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="a25ae17f8471a9bf584e4b13eae4782fb"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mpcdiGetMacro</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_name_, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_type_&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;inline _type_ Get##_name_ () { return this-&gt;m_##_name_; }</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="a6832927aa4a956bed665cdbafacd81c9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mpcdiGetRefMacro</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_name_, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_type_&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> _type_ &amp;GetRef##_name_ () {  <span class="keywordflow">return</span> (this-&gt;m_##_name_); } \</div>
<div class="line">    inline <span class="keyword">const</span> _type_ &amp;GetRef##_name_ ()<span class="keyword"> const </span>{  <span class="keywordflow">return</span> (this-&gt;m_##_name_); }</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a6cac6b16c6552b26de6ede14d5d24ad0"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mpcdiSafeDeleteMacro</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">object)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">{                                \</div>
<div class="line">  assert(<span class="keywordtype">object</span>-0 == <span class="keywordtype">object</span>);   <span class="comment">/* Prevents Smart Pointers here */</span>    \</div>
<div class="line">  CompilerAssert(<span class="keyword">sizeof</span>(<span class="keywordtype">object</span>) == <span class="keyword">sizeof</span>(<span class="keywordtype">void</span>*));                    \</div>
<div class="line">  if(<span class="keywordtype">object</span> != NULL) delete <span class="keywordtype">object</span>; }</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ab44e6edda8b02cba126ea2bc185ebfec"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mpcdiSet2Macro</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_funcname_, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_xname_, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_yname_, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">Type_&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="namespacempcdi.html#acd4b0b3107b2a04ec04ba94b834fd881">MPCDI_Error</a> Set##_funcname_(<span class="keyword">const</span> Type_ &amp; _argx, <span class="keyword">const</span> Type_ &amp; _argy) \</div>
<div class="line">      { <a class="code" href="mpcdi_macros_8h.html#a1770fc1b240a096dd93af8f685332ba9">MPCDI_FAIL_RET</a>(this-&gt;Set##_xname_(_argx)); <a class="code" href="mpcdi_macros_8h.html#a1770fc1b240a096dd93af8f685332ba9">MPCDI_FAIL_RET</a>(this-&gt;Set##_yname_(_argy)); <span class="keywordflow">return</span> <a class="code" href="namespacempcdi.html#acd4b0b3107b2a04ec04ba94b834fd881a27df31d7f05e0af015fe8e086a13feec">MPCDI_SUCCESS</a>;}</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="affe15c1bcae0826a7ecee2f07c460cfd"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mpcdiSet3Macro</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_funcname_, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_xname_, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_yname_, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_zname_, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">Type_&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">inline</span> <a class="code" href="namespacempcdi.html#acd4b0b3107b2a04ec04ba94b834fd881">MPCDI_Error</a> Set##_funcname_(<span class="keyword">const</span> Type_ &amp; _argx, <span class="keyword">const</span> Type_ &amp; _argy, <span class="keyword">const</span> Type_ &amp; _argz ) \</div>
<div class="line">      { <a class="code" href="mpcdi_macros_8h.html#a1770fc1b240a096dd93af8f685332ba9">MPCDI_FAIL_RET</a>(this-&gt;Set##_xname_(_argx)); <a class="code" href="mpcdi_macros_8h.html#a1770fc1b240a096dd93af8f685332ba9">MPCDI_FAIL_RET</a>(this-&gt;Set##_yname_(_argy)); <a class="code" href="mpcdi_macros_8h.html#a1770fc1b240a096dd93af8f685332ba9">MPCDI_FAIL_RET</a>(this-&gt;Set##_zname_(_argz)); <span class="keywordflow">return</span> <a class="code" href="namespacempcdi.html#acd4b0b3107b2a04ec04ba94b834fd881a27df31d7f05e0af015fe8e086a13feec">MPCDI_SUCCESS</a>;  }</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="aa069c9e81e8c911fba635cf2d3807b38"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mpcdiSetMacro</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_name_, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_Type_&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;inline MPCDI_Error Set##_name_ (const _Type_ &amp; _arg) { this-&gt;m_##_name_ = _arg; return MPCDI_SUCCESS; }</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="a7d52a3852128121830435a75ef4bf651"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mpcdiSetMacroRange</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_Name_, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_Type_, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_Min_, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_Max_&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line"><span class="keyword">static</span> <a class="code" href="namespacempcdi.html#acd4b0b3107b2a04ec04ba94b834fd881">MPCDI_Error</a> CheckRange##_Name_(<span class="keyword">const</span> _Type_ &amp; _Arg)\</div>
<div class="line">    { \</div>
<div class="line">      if((_Arg&lt;_Min_) || (_Arg &gt; _Max_)) \</div>
<div class="line">      {\</div>
<div class="line">        CREATE_ERROR_MSG(msg, <span class="stringliteral">&quot;Value for Set&quot;</span> &lt;&lt; #_Name_ &lt;&lt; <span class="stringliteral">&quot; needs to be in [&quot;</span> &lt;&lt; _Min_ &lt;&lt; <span class="stringliteral">&quot;,&quot;</span> &lt;&lt; _Max_ &lt;&lt; <span class="stringliteral">&quot;]&quot;</span> &lt;&lt; <span class="stringliteral">&quot; input: &quot;</span> &lt;&lt; _Arg &lt;&lt; <span class="stringliteral">&quot; is out of range&quot;</span> );\</div>
<div class="line">        ReturnCustomErrorMacro(<a class="code" href="namespacempcdi.html#acd4b0b3107b2a04ec04ba94b834fd881a57fed91ce1f916e0222d9db8aee8b84f">MPCDI_VALUE_OUT_OF_RANGE</a>, msg);\</div>
<div class="line">      }\</div>
<div class="line">      return <a class="code" href="namespacempcdi.html#acd4b0b3107b2a04ec04ba94b834fd881a27df31d7f05e0af015fe8e086a13feec">MPCDI_SUCCESS</a>; \</div>
<div class="line">    } \</div>
<div class="line">    inline <a class="code" href="namespacempcdi.html#acd4b0b3107b2a04ec04ba94b834fd881">MPCDI_Error</a> Set##_Name_ (<span class="keyword">const</span> _Type_ &amp; _Arg) \</div>
<div class="line">    { \</div>
<div class="line">      MPCDI_FAIL_RET(CheckRange##_Name_(_Arg)); \</div>
<div class="line">      this-&gt;m_##_Name_ = _Arg; \</div>
<div class="line">      return <a class="code" href="namespacempcdi.html#acd4b0b3107b2a04ec04ba94b834fd881a27df31d7f05e0af015fe8e086a13feec">MPCDI_SUCCESS</a>; \</div>
<div class="line">    }</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="a2f3fa2b73ac158a4915f668a46516e21"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mpcdiSetRefMacro</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_name_, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">_type_&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;inline _type_ &amp;Set##_name_ () {  return this-&gt;m_##_name_; }</td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="a4bfd75d3ae7a5d5e35db1e6014ab92c9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define mpcdiWarningMacro</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">x)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_4814b1a558d470c33d85e65dbde02eaa.html">Base</a></li><li class="navelem"><a class="el" href="mpcdi_macros_8h.html">mpcdiMacros.h</a></li>
    <li class="footer">Generated on Thu Aug 15 2013 13:49:01 for MPCDI Library by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.4 </li>
  </ul>
</div>
</body>
</html>
